package com.iemes.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;

public class MyDateUtils {
	
	/**
	 * 提前数据库的时间字段
	 * @param date	需要提前的数据库时间字段
	 * @param millisecond	提前的时间（单位：毫秒）
	 * @return
	 */
	public static String pTime(String date,long millisecond){
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String pTime="";
		try {
			//sdf.parse()实现日期转换为Date格式，然后getTime()转换为毫秒数值
			long dateToSecond = sdf.parse(date).getTime();
            long date2=dateToSecond-millisecond;
            Date dat=new Date(date2);
	        GregorianCalendar gc = new GregorianCalendar(); //标准阳历
	        gc.setTime(dat); //利用setTime()设置其时间
	        pTime=sdf.format(gc.getTime()); //利用format()将日期类型转换为String类型
        }catch (ParseException e){
            e.printStackTrace();
        }
		return pTime;
	}
	
	/**
	 * 推迟数据库的时间字段
	 * @param date	需要推迟的数据库时间字段
	 * @param millisecond	推迟的时间（单位：毫秒）
	 * @return
	 */
	public static String delayTime(String date,long millisecond){
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String pTime="";
		try {
			//sdf.parse()实现日期转换为Date格式，然后getTime()转换为毫秒数值
			long dateToSecond = sdf.parse(date).getTime();
            long date2=dateToSecond+millisecond;
            Date dat=new Date(date2);
	        GregorianCalendar gc = new GregorianCalendar(); //标准阳历
	        gc.setTime(dat); //利用setTime()设置其时间
	        pTime=sdf.format(gc.getTime()); //利用format()将日期类型转换为String类型
        }catch (ParseException e){
            e.printStackTrace();
        }
		return pTime;
	}
	
	/**
	 * 计算间隔的天数
	 * @param date	读取《预排指令》表的“完成时间”字段
	 * @param day	设置间隔的天数
	 * @return
	 */
	public static long intervalTime(String date,int day){
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		long date2=0;
		try {
			//sdf.parse()实现日期转换为Date格式，然后getTime()转换为毫秒数值
			long dateToSecond1 = sdf.parse(date).getTime();
			//获取目前时间
			Date today=new Date();
			//把当前时间转换为毫秒数值
			long dateToSecond2 = sdf.parse(sdf.format(today)).getTime();
			//先把当前时间与《预排指令》表的“完成时间”相减，再把相减的毫秒数转化为天数
            date2=(dateToSecond2-dateToSecond1)/(1000 * 60 * 60 * 24)-day;
        }catch (ParseException e){
            e.printStackTrace();
        }
		return date2;
	}
	
	/**
	 * 根据天数计算间隔的日期
	 * @param date	《车辆调度明细表》的“outDate”字段
	 * @param day	《客户基本信息》表的“间隔天数”字段
	 * @return
	 */
	public static String intervalDate(String date,String day){
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String pTime="";
		try {
			//sdf.parse()实现日期转换为Date格式，然后getTime()转换为毫秒数值
			long dateToSecond1 = sdf.parse(date).getTime();
			//把《客户基本信息》表的“间隔天数”转换为毫秒数值
			long dateToSecond2 =  Integer.parseInt(day) * 24 * 1000 * 60 * 60;
			//先把两数相加，再把相减的毫秒数转化为日期
			long date2=dateToSecond1+dateToSecond2;
			Date dat=new Date(date2);
	        GregorianCalendar gc = new GregorianCalendar(); //标准阳历
	        gc.setTime(dat); //利用setTime()设置其时间
	        pTime=sdf.format(gc.getTime()); //利用format()将日期类型转换为String类型
        }catch (ParseException e){
            e.printStackTrace();
        }
		return pTime;
	}
	
	/**
	 * 计算间隔的时间
	 * @param date	相应数据库表的第一个时间字段
	 * @param hour	相应数据库表的第二个时间字段
	 * @return
	 */
	public static long intervalHour(String hour1,String hour2){
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		long date2=0;
		try {
			//sdf.parse()实现日期转换为Date格式，然后getTime()转换为毫秒数值
			long dateToSecond1 = sdf.parse(hour1).getTime();
			long dateToSecond2 = sdf.parse(hour2).getTime();
			//先把两个时间字段相减，再把相减的毫秒数转化为分钟数
            date2=(dateToSecond1-dateToSecond2)/(1000 * 60);
        }catch (ParseException e){
            e.printStackTrace();
        }
		return date2;
	}
}
